package com.atguigu09.inner;
/*
* 匿名内部类
* */
public class AnInnerClass {
    public static void main(String[] args) {
        //1.需求:想使用IA接口,并创建对象
//2.传统方式，是写一个类，实现该接口，并创建对象
//3.老韩需求是 Tiger/Dog 类只是使用一次，后面再不使用
// 4。可以使用匿名内部类来简化开发
//5. tiger的编译类型?IA
//6. tiger的运行类型?就是匿名内部类
        //jdk在底层创建了一个类，并实现了IA接口中的方法
        //但这个类使用之后就消失了，但实例一直都在
        IA tiger=new IA() {
            @Override
            public void shout() {
                System.out.println("laohujiao");
            }
        };
        tiger.shout();


        //基于类的匿名内部类
        //1. father编译类型 Father//2. father运行类型Outer04$2l/3．底层会创建匿名内部类
/*
class Outer04$2 extends Father{
0verride
public void test() {
System.out.println("匿名内部类重写了test方法");
}
}
*/
        Father f=new Father("jack"){
            @Override
            public void method() {
                System.out.println("匿名内部类重写了method方法");
            }
        };
    }
}

interface IA{
    public void shout();
}

class Tiger implements IA{
    @Override
    public void shout() {
        System.out.println("tiger ");
    }
}

class Father{
    public Father(String name) {

    }
    public void method(){

    }
}